/**
 * @name ajax请求
 * @param { String } url 请求地址
 * @param { Object } data 请求参数
 * @param { Boolean } loading loading提示
 */
// 域名
import env from "../env.js";
import {
	i18n,
	lang
} from '@/common/locales/index.js'
let baseUrl = ''
// console.log(env)
if (process.env.NODE_ENV === 'development') {
	// 线上环境
	baseUrl = env.dev.apiURl;
} else {
	// 开发环境
	baseUrl = env.prod.apiURl;
}
let locale = 'zh-cn'
class ajax {
	constructor() {
		this.get = (url, data, ContentType = "application/x-www-form-urlencoded") => {
			return this.request('GET', url, data, ContentType);
		};

		this.post = (url, data, ContentType = "application/x-www-form-urlencoded") => {
			return this.request('POST', url, data, ContentType);
		};

		this.put = (url, data, ContentType = "application/x-www-form-urlencoded") => {
			return this.request('PUT', url, data, ContentType);
		};

		this.del = (url, data, ContentType = "application/x-www-form-urlencoded") => {
			return this.request('DELETE', url, data, ContentType);
		};
	}

	async request(method, url, data, ContentType) {
		return new Promise((resolve, reject) => {
			if (data && data.loading) {
				uni.showLoading({
					title: '',
					mask: true
				});
			} // url  判断


			if (url.slice(0, 4) != 'http') {
				url = baseUrl + url;
			} // token  判断  添加
			let langvalue = uni.getLocale()
			if (langvalue == 'zh-Hans') {
				langvalue = 'zh'
			}
			let lang = uni.getStorageSync('language') || langvalue
			if (lang == 'zh') {
				locale = 'zh-cn'
			} else {
				locale = 'zh-en'
			}
			let token = uni.getStorageSync('token');
			let header = {
				'Content-type': ContentType,
				'lang': locale
			};

			if (token) {
				header.token = uni.getStorageSync('token');
			} // #ifdef H5


			header.type = "H5"; // #endif
			// #ifdef APP-PLUS

			header.type = "App"; // #endif
			// #ifdef MP-WEIXIN

			header.type = "wechatmini"; // #endif

			uni.request({
				method,
				url,
				data,
				header,
				success: res => {
					if (res.data.code === 1) {
						resolve(res.data);

						if (data && data.loading) {
							uni.hideLoading();
						}
					} else if (res.data.code === 401) {
						resolve(res.data);
						uni.removeStorageSync('token');
						uni.removeStorageSync('userinfo');
						uni.reLaunch({
							url: '/pageA/public/login'
						});

						if (data && data.loading) {
							uni.hideLoading();
						}
					} else if (res.data.status === 402 || res.data.code === 301) {
						resolve(res.data);
						msg(res.data.data.msg)
						jump(res.data.data.url, res.data.data.type, res.data.data.time)
						if (data && data.loading) {
							uni.hideLoading();
						}
					} else {
						uni.showToast({
							title: res.data.msg,
							icon: 'none'
						});
						resolve(res.data);
					}
				},
				fail: err => {
					console.log(
						1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
					)
					console.log(
						1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
					)
					console.log(
						1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
					)
					console.log(
						1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
					)
					console.log(
						1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
					)
					reject(err);
					console.log(err)
					console.log(
						1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
					)
					console.log(
						1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
					)
					console.log(
						1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
					)
					console.log(
						1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
					)
					console.log(
						1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
					)
					let msg = err.errMsg;

					if (msg.indexOf('timeout') > -1) {
						msg = 'Connection timeout';
					}

					if (msg.indexOf('abort') > -1) {
						msg = 'Connection termination';
					}

					uni.showToast({
						title: msg || 'network error ！',
						icon: 'none'
					});
				}
			});
		});
	}

}
const msg = (title, duration = 1500, mask = false, icon = 'none') => {
	if (Boolean(title) === false) {
		return;
	}

	uni.showToast({
		title,
		duration,
		mask,
		icon
	});
}; // 提示信息

function jump(url, type = 0, time) {
	// type 0 正常跳转
	// type 1 跳转底部
	if (url == '' && type == 0) {
		msg('开发中...');
		return;
	}
	if (type == 0) {
		setTimeout(() => {
			uni.navigateTo({
				url
			});
		}, time);
	} else if (type == 1) {
		setTimeout(() => {
			uni.switchTab({
				url
			});
		}, time);
	} else if (type == 2) {
		setTimeout(() => {
			uni.redirectTo({
				url
			});
		}, time);
	} else if (type == 3) {
		setTimeout(() => {
			uni.reLaunch({
				url
			});
		}, time);
	} else if (type == 4) {
		if (time == 0) {
			time = 1500;
		}

		setTimeout(() => {
			uni.navigateBack();
		}, time);
	}
} // 图片处理 
export default new ajax();